﻿/*****************************************************************//**
 * @file   OperVAOneXMLExport.h
 * @brief  VAOne XML导出操作
 * 
 * @author TanDongYang
 * @date   2024-11-12
 *********************************************************************/

#ifndef OPERVAONEXMLEXPORT_H
#define OPERVAONEXMLEXPORT_H

#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"

namespace ModelOper
{
    /**
     * @brief   VAOne XML导出操作
     * @author  TanDongYang (tandongyang@diso.cn)
     * @date    2024-11-12 
     */
    class OperVAOneXMLExport :public Core::FITKActionOperator
    {
        Q_OBJECT;
    public:
        /**
         * @brief   Construct a new Oper VAOne XML Export object
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-12 
         */
        explicit OperVAOneXMLExport() = default;

        /**
         * @brief   Destroy the Oper VAOne XML Export object
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-12 
         */
        virtual ~OperVAOneXMLExport() = default;

        /**
         * @brief   执行GUI操作，选择文件对话框
         * @return  true
         * @return  false
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-12 
         */
        virtual bool execGUI() override;

        /**
         * @brief   执行业务操作，导出XML文件
         * @return true
         * @return false
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-12 
         */
        virtual bool execProfession() override;

    private slots:

        /**
         * @brief 导出线程结束执行该槽函数
         * @author TanDongYang
         * @date 2024-11-12 
         */
        void ioThreadFinishedSlot();
    };
    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionExportVAOneXML, OperVAOneXMLExport);
}


#endif // OPERVAONEXMLEXPORT_H
